home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 26
/
Cream of the Crop 26.iso
/
program
/
ccdl150l.zip
/
SORT
/
QSORT.SRC
< prev
Wrap
Text File
|
1997-03-18
|
2KB
|
134 lines
SECTION code
XDEF _qsort
;
; Line 6: {
;
_qsort:
LINK A6,#$0
MOVEM.L D3/D4/D5/D6/D7/A2/A3/A4,-(A7)
LEA (_memcpy,PC),A2
;
; Line 8: void *buf = malloc(width);
;
MOVE.L D3,-(A7)
BSR _malloc
ADDQ.W #$4,A7
MOVEA.L D0,A4
;
; Line 9: char *wp1 = base;
;
MOVE.L ($8,A6),D4
;
; Line 10: if (!buf)
;
MOVE.L A4,D0
BNE L_0
;
; Line 11: return;
;
BRA L_2
L_0:
MOVEA.W #$0,A3
BRA L_5
L_3:
;
; Line 13: char *wp2 = wp1 + width;
;
MOVE.L D4,D0
ADD.L D3,D0
MOVE.L D0,D6
MOVE.L A3,D0
ADDQ.L #$1,D0
MOVE.L D0,D5
BRA L_8
L_6:
;
; Line 15: if ((*compare)(wp1,wp2) >0) {
;
MOVE.L D6,-(A7)
MOVE.L D4,-(A7)
MOVEA.L ($14,A6),A0
MOVEA.L (A0),A0
JSR (A0)
ADDQ.W #$8,A7
CMPI.L #$0,D0
BLE L_9
;
; Line 16: memcpy(buf,wp1,width);
;
MOVE.L D3,-(A7)
MOVE.L D4,-(A7)
MOVE.L A4,-(A7)
BSR _memcpy
LEA ($C,A7),A7
;
; Line 17: memcpy(wp1,wp2,width);
;
MOVE.L D3,-(A7)
MOVE.L D6,-(A7)
MOVE.L D4,-(A7)
BSR _memcpy
LEA ($C,A7),A7
;
; Line 18: memcpy(wp2,buf,width);
;
MOVE.L D3,-(A7)
MOVE.L A4,-(A7)
MOVE.L D6,-(A7)
BSR _memcpy
LEA ($C,A7),A7
;
; Line 19: }
;
L_9:
;
; Line 20: wp2 += width;
;
ADD.L D3,D6
;
; Line 21: }
;
ADDQ.L #$1,D5
L_8:
;
; Line 14: for (j=i+1; j < num; j++) {
;
CMP.L D7,D5
BLT L_6
L_7:
;
; Line 22: wp1 += width;
;
ADD.L D3,D4
;
; Line 23: }
;
ADDQ.W #$1,A3
L_5:
;
; Line 12: for (i=0; i < num-1;i++) {
;
MOVE.L D7,D0
SUBQ.L #$1,D0
CMPA.L D0,A3
BLT L_3
L_4:
;
; Line 24: free(buf);
;
MOVE.L A4,-(A7)
BSR _free
ADDQ.W #$4,A7
;
; Line 26: }
;
L_2:
MOVEM.L (A7)+,D3/D4/D5/D6/D7/A2/A3/A4
UNLK A6
RTS
SECTION data
SECTION bss
XREF _free
XREF _memcpy
XREF _malloc